package com.example.daiyinuo.composite;


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.NoSuchElementException;

public abstract class CompositeEquipment extends Equipment {

    private int i = 0;
    //定义一个Vector 用来存放'儿子'
    private List equipment = new ArrayList();

    public CompositeEquipment(String name) {
        super(name);
    }

    public boolean add(Equipment equipment) {
        this.equipment.add(equipment);
        return true;
    }

    public double netPrice() {
        double netPrice = 0;
        Iterator iter = equipment.iterator();
        while (iter.hasNext())
            netPrice += ((Equipment) iter.next()).netPrice();

        return netPrice;
    }

    public double disCountPrice() {
        double discountPrice = 0;
        Iterator iter = equipment.iterator();
        while (iter.hasNext())
            discountPrice += ((Equipment) iter.next()).disCountPrice();
        return discountPrice;
    }

    //注意这里就是访问自己组合体内的部件方法，之前Disk没有 是因为Disk是个单独的元素

    //上面 CompositeEquipment 继承了 Equipment,同时为自己里面的对象们提供了外部访问的方法,重载了
    //Iterator,Iterator 是 Java 的 Collection 的一个接口，是 Iterator 模式的实现.
    //我们再看看 CompositeEquipment 的两个具体类:盘盒 Chassis 和箱子 Cabinet，箱子里面可以放很多东西，如底板，
    //电源盒，硬盘盒等；盘盒里面可以放一些小设备，如硬盘 软驱等。无疑这两个都是属于组合体性质的。
}
